package vista;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyListener;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

import modelo.jugador.Jugador;
import modelo.vehiculos.Auto;
import modelo.vehiculos.Camioneta;
import modelo.vehiculos.Moto;
import modelo.vehiculos.Vehiculo;


@SuppressWarnings("serial")
public class VistaVehiculo extends JPanel{
	
		//Cargo las imagenes
	private ImageIcon autoD = new ImageIcon(getClass().getResource("/imagenes/vehiculos/autoMapa.png"));
	private ImageIcon autoI = new ImageIcon(getClass().getResource("/imagenes/vehiculos/autoMapaIzq.png"));
	private ImageIcon autoArr = new ImageIcon(getClass().getResource("/imagenes/vehiculos/autoMapaArriba.png"));
	private ImageIcon autoAb = new ImageIcon(getClass().getResource("/imagenes/vehiculos/autoMapaAbajo.png"));
	private ImageIcon motoD = new ImageIcon(getClass().getResource("/imagenes/vehiculos/motoMapa.png"));
	private ImageIcon motoI = new ImageIcon(getClass().getResource("/imagenes/vehiculos/motoMapaIzq.png"));
	private ImageIcon motoArr = new ImageIcon(getClass().getResource("/imagenes/vehiculos/motoMapaArriba.png"));
	private ImageIcon motoAb = new ImageIcon(getClass().getResource("/imagenes/vehiculos/motoMapaAbajo.png"));
	private ImageIcon camioD = new ImageIcon(getClass().getResource("/imagenes/vehiculos/camionetaMapa.png"));
	private ImageIcon camioI = new ImageIcon(getClass().getResource("/imagenes/vehiculos/camionetaMapaIzq.png"));
	private ImageIcon camioArr = new ImageIcon(getClass().getResource("/imagenes/vehiculos/camionetaMapaArriba.png"));
	private ImageIcon camioAb = new ImageIcon(getClass().getResource("/imagenes/vehiculos/camionetaMapaAbajo.png"));
	
	private String tipoDeVehiculo;
	private Image vehiculoImagen;
	private Vehiculo vehiculo;
	private int dimension,altoVehiculo,anchoVehiculo;
	private int posX, posY;
	private int orientacion; // 1= derecha , 2=izquierda, 3=arriba, 4=abajo.
	private Jugador conductor;
		
	public VistaVehiculo(Jugador unJugador, int dim){
		dimension = dim;
		
		orientacion=1; //Asigno que siempre empiece de forma derecha
		conductor = unJugador;
		vehiculo = conductor.getMovil();
		actualizarImagen();  //Elijo la imagen a mostrar, segun el vehiculo
		
		altoVehiculo=dimension*21/25;
		anchoVehiculo=dimension*21/50;
		this.setSize(altoVehiculo, anchoVehiculo);
		this.setBackground(Color.black);
		posX=conductor.getMovil().getPosicion().getX();
		posY=conductor.getMovil().getPosicion().getY();
		setLocation(posY*(2*dimension)-dimension+(dimension*2/25),posX*(2*dimension)-dimension+(dimension*29/100));
		setFocusable(true);
		setFocusTraversalKeysEnabled(false);
		
	}
	
	protected void paintComponent(Graphics g){
		super.paintComponent(g);
		g.drawImage(vehiculoImagen, 0, 0, altoVehiculo, anchoVehiculo, this);
	}
	
	public String getTipoDeVehiculo(){
		return tipoDeVehiculo;
	}
	
	public int getDim(){
		return dimension;
	}
	
	public int getOrientacion(){
		return orientacion;
	}
	
	public void setOrientacion(int orienta){
		orientacion = orienta;
	}
	
	private void imagenVertical(){
			altoVehiculo = dimension*21/50;
			anchoVehiculo = dimension*21/25;
			this.setSize(altoVehiculo, anchoVehiculo);
	}
	
	private void imagenHorizontal(){
			altoVehiculo = dimension*21/25;
			anchoVehiculo = dimension*21/50;
			this.setSize(altoVehiculo, anchoVehiculo);
	}
	
	public void actualizarImagen(){
		vehiculo = conductor.getMovil();
		if (vehiculo.getClass()==Auto.class) {
			tipoDeVehiculo="Auto";
			switch (orientacion){
				case 1: vehiculoImagen=autoD.getImage();
						imagenHorizontal();
						break;
				case 2: vehiculoImagen=autoI.getImage();
						imagenHorizontal();
						break;
				case 3: vehiculoImagen=autoArr.getImage();
						imagenVertical();
						break;
				case 4: vehiculoImagen=autoAb.getImage();
						imagenVertical();
						break;
			}
						
		}else if (vehiculo.getClass()==Moto.class){
			tipoDeVehiculo="Moto";
			switch (orientacion){
				case 1: vehiculoImagen=motoD.getImage();
						imagenHorizontal();
						break;
				case 2: vehiculoImagen=motoI.getImage();
						imagenHorizontal();
						break;
				case 3: vehiculoImagen=motoArr.getImage();
						imagenVertical();
						break;
				case 4: vehiculoImagen=motoAb.getImage();
						imagenVertical();
						break;
		}
			
		}else if (vehiculo.getClass()==Camioneta.class){
			tipoDeVehiculo="Camioneta";
			switch (orientacion){
				case 1: vehiculoImagen=camioD.getImage();
						imagenHorizontal();
						break;
				case 2: vehiculoImagen=camioI.getImage();
						imagenHorizontal();
						break;
				case 3: vehiculoImagen=camioArr.getImage();
						imagenVertical();
						break;
				case 4: vehiculoImagen=camioAb.getImage();
						imagenVertical();
						break;
		}
	    }
	}
	
	public void addTeclaListener(KeyListener listenerForTecla){
		
		this.addKeyListener(listenerForTecla);
	}
}